const { DataTypes } = require('sequelize');
const { sequelize } = require('../config/database');

const ChapterConfig = sequelize.define('ChapterConfig', {
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true,
    autoIncrement: true
  },
  chapterNumber: {
    type: DataTypes.INTEGER,
    allowNull: false,
    comment: '章节号'
  },
  chapterTitle: {
    type: DataTypes.STRING(200),
    allowNull: false,
    comment: '章节标题'
  },
  chapterDescription: {
    type: DataTypes.TEXT,
    comment: '章节描述'
  },
  isActive: {
    type: DataTypes.BOOLEAN,
    defaultValue: true,
    comment: '是否启用'
  },
  // DOCX文档配置
  docxConfig: {
    type: DataTypes.JSON,
    comment: 'DOCX文档配置，包含讲义等文件路径和权重'
  },
  // PPTX课件配置
  pptxConfig: {
    type: DataTypes.JSON,
    comment: 'PPTX课件配置，包含幻灯片等文件路径和权重'
  },
  // 视频内容配置
  videosConfig: {
    type: DataTypes.JSON,
    comment: '视频内容配置，包含主要视频和视频列表'
  },
  // 示例内容配置
  examplesConfig: {
    type: DataTypes.JSON,
    comment: '示例内容配置，包含示例文件和描述'
  },
  // 实践课堂配置
  practiceConfig: {
    type: DataTypes.JSON,
    comment: '实践课堂配置，包含练习内容和权重'
  },
  // 作业与任务配置
  assignmentsConfig: {
    type: DataTypes.JSON,
    comment: '作业与任务配置，包含作业内容和分值'
  },
  // 权重配置
  weightConfig: {
    type: DataTypes.JSON,
    comment: '各模块权重配置',
    defaultValue: {
      docx: 20,
      pptx: 15,
      videos: 30,
      examples: 20,
      practice: 15,
      assignments: 15
    }
  },
  // 创建者
  createdBy: {
    type: DataTypes.INTEGER,
    comment: '创建者用户ID'
  },
  // 更新者
  updatedBy: {
    type: DataTypes.INTEGER,
    comment: '更新者用户ID'
  }
}, {
  tableName: 'chapter_configs',
  timestamps: true,
  indexes: [
    {
      unique: true,
      fields: ['chapterNumber']
    }
  ]
});

module.exports = ChapterConfig;